home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / wx / py / crust.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  13KB  |  310 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
  5. __cvsid__ = '$Id: crust.py 44235 2007-01-17 23:05:14Z RD $'
  6. __revision__ = '$Revision: 44235 $'[11:-2]
  7. import wx
  8. import os
  9. import pprint
  10. import re
  11. import sys
  12. import dispatcher
  13. import editwindow
  14. from filling import Filling
  15. import frame
  16. from shell import Shell
  17. from version import VERSION
  18.  
  19. class Crust(wx.SplitterWindow):
  20.     name = 'Crust'
  21.     revision = __revision__
  22.     sashoffset = 300
  23.     
  24.     def __init__(self, parent, id = -1, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.SP_3D | wx.SP_LIVE_UPDATE, name = 'Crust Window', rootObject = None, rootLabel = None, rootIsNamespace = True, intro = '', locals = None, InterpClass = None, startupScript = None, execStartupScript = True, *args, **kwds):
  25.         wx.SplitterWindow.__init__(self, parent, id, pos, size, style, name)
  26.         style = self.GetWindowStyle()
  27.         self.SetWindowStyle(style & ~(wx.TAB_TRAVERSAL))
  28.         self.shell = Shell(parent = self, introText = intro, locals = locals, InterpClass = InterpClass, startupScript = startupScript, execStartupScript = execStartupScript, *args, **kwds)
  29.         self.editor = self.shell
  30.         if rootObject is None:
  31.             rootObject = self.shell.interp.locals
  32.         
  33.         self.notebook = wx.Notebook(parent = self, id = -1)
  34.         self.shell.interp.locals['notebook'] = self.notebook
  35.         self.filling = Filling(parent = self.notebook, rootObject = rootObject, rootLabel = rootLabel, rootIsNamespace = rootIsNamespace)
  36.         self.shell.interp.locals['filling'] = self.filling
  37.         self.notebook.AddPage(page = self.filling, text = 'Namespace', select = True)
  38.         self.display = Display(parent = self.notebook)
  39.         self.notebook.AddPage(page = self.display, text = 'Display')
  40.         self.shell.interp.locals['pp'] = self.display.setItem
  41.         self.display.nbTab = self.notebook.GetPageCount() - 1
  42.         self.calltip = Calltip(parent = self.notebook)
  43.         self.notebook.AddPage(page = self.calltip, text = 'Calltip')
  44.         self.sessionlisting = SessionListing(parent = self.notebook)
  45.         self.notebook.AddPage(page = self.sessionlisting, text = 'History')
  46.         self.dispatcherlisting = DispatcherListing(parent = self.notebook)
  47.         self.notebook.AddPage(page = self.dispatcherlisting, text = 'Dispatcher')
  48.         self.shell.Hide()
  49.         self.notebook.Hide()
  50.         self.Initialize(self.shell)
  51.         self._shouldsplit = True
  52.         wx.CallAfter(self._CheckShouldSplit)
  53.         self.SetMinimumPaneSize(100)
  54.         self.Bind(wx.EVT_SIZE, self.SplitterOnSize)
  55.         self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED, self.OnChanged)
  56.         self.Bind(wx.EVT_SPLITTER_DCLICK, self.OnSashDClick)
  57.  
  58.     
  59.     def _CheckShouldSplit(self):
  60.         if self._shouldsplit:
  61.             self.SplitHorizontally(self.shell, self.notebook, -(self.sashoffset))
  62.             self.lastsashpos = self.GetSashPosition()
  63.         else:
  64.             self.lastsashpos = -1
  65.         self.issplit = self.IsSplit()
  66.  
  67.     
  68.     def ToggleTools(self):
  69.         if self.issplit:
  70.             self.Unsplit()
  71.         else:
  72.             self.SplitHorizontally(self.shell, self.notebook, -(self.sashoffset))
  73.             self.lastsashpos = self.GetSashPosition()
  74.         self.issplit = self.IsSplit()
  75.  
  76.     
  77.     def ToolsShown(self):
  78.         return self.issplit
  79.  
  80.     
  81.     def OnChanged(self, event):
  82.         self.sashoffset = self.GetSize().height - event.GetSashPosition()
  83.         self.lastsashpos = event.GetSashPosition()
  84.         event.Skip()
  85.  
  86.     
  87.     def OnSashDClick(self, event):
  88.         self.Unsplit()
  89.         self.issplit = False
  90.  
  91.     
  92.     def SplitterOnSize(self, event):
  93.         splitter = event.GetEventObject()
  94.         sz = splitter.GetSize()
  95.         splitter.SetSashPosition(sz.height - self.sashoffset, True)
  96.         event.Skip()
  97.  
  98.     
  99.     def LoadSettings(self, config):
  100.         self.shell.LoadSettings(config)
  101.         self.filling.LoadSettings(config)
  102.         pos = config.ReadInt('Sash/CrustPos', 400)
  103.         wx.CallAfter(self.SetSashPosition, pos)
  104.         
  105.         def _updateSashPosValue():
  106.             sz = self.GetSize()
  107.             self.sashoffset = sz.height - self.GetSashPosition()
  108.  
  109.         wx.CallAfter(_updateSashPosValue)
  110.         zoom = config.ReadInt('View/Zoom/Display', -99)
  111.         if zoom != -99:
  112.             self.display.SetZoom(zoom)
  113.         
  114.         self.issplit = config.ReadInt('Sash/IsSplit', True)
  115.         if not self.issplit:
  116.             self._shouldsplit = False
  117.         
  118.  
  119.     
  120.     def SaveSettings(self, config):
  121.         self.shell.SaveSettings(config)
  122.         self.filling.SaveSettings(config)
  123.         if self.lastsashpos != -1:
  124.             config.WriteInt('Sash/CrustPos', self.lastsashpos)
  125.         
  126.         config.WriteInt('Sash/IsSplit', self.issplit)
  127.         config.WriteInt('View/Zoom/Display', self.display.GetZoom())
  128.  
  129.  
  130.  
  131. class Display(editwindow.EditWindow):
  132.     
  133.     def __init__(self, parent, id = -1, pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.CLIP_CHILDREN | wx.SUNKEN_BORDER, static = False):
  134.         editwindow.EditWindow.__init__(self, parent, id, pos, size, style)
  135.         self.SetReadOnly(True)
  136.         self.SetWrapMode(False)
  137.         if not static:
  138.             dispatcher.connect(receiver = self.push, signal = 'Interpreter.push')
  139.         
  140.  
  141.     
  142.     def push(self, command, more):
  143.         self.Refresh()
  144.  
  145.     
  146.     def Refresh(self):
  147.         if not hasattr(self, 'item'):
  148.             return None
  149.         
  150.         self.SetReadOnly(False)
  151.         text = pprint.pformat(self.item)
  152.         self.SetText(text)
  153.         self.SetReadOnly(True)
  154.  
  155.     
  156.     def setItem(self, item):
  157.         self.item = item
  158.         self.Refresh()
  159.         if self.GetParent().GetSelection() != self.nbTab:
  160.             focus = wx.Window.FindFocus()
  161.             self.GetParent().SetSelection(self.nbTab)
  162.             wx.CallAfter(focus.SetFocus)
  163.         
  164.  
  165.  
  166.  
  167. class Calltip(wx.TextCtrl):
  168.     
  169.     def __init__(self, parent = None, id = -1):
  170.         style = wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2
  171.         wx.TextCtrl.__init__(self, parent, id, style = style)
  172.         self.SetBackgroundColour(wx.Colour(255, 255, 208))
  173.         dispatcher.connect(receiver = self.display, signal = 'Shell.calltip')
  174.         df = self.GetFont()
  175.         font = wx.Font(df.GetPointSize(), wx.TELETYPE, wx.NORMAL, wx.NORMAL)
  176.         self.SetFont(font)
  177.  
  178.     
  179.     def display(self, calltip):
  180.         self.Clear()
  181.         self.AppendText(calltip)
  182.  
  183.  
  184.  
  185. class SessionListing(wx.TextCtrl):
  186.     
  187.     def __init__(self, parent = None, id = -1):
  188.         style = wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2 | wx.TE_DONTWRAP
  189.         wx.TextCtrl.__init__(self, parent, id, style = style)
  190.         dispatcher.connect(receiver = self.addHistory, signal = 'Shell.addHistory')
  191.         dispatcher.connect(receiver = self.clearHistory, signal = 'Shell.clearHistory')
  192.         dispatcher.connect(receiver = self.loadHistory, signal = 'Shell.loadHistory')
  193.         df = self.GetFont()
  194.         font = wx.Font(df.GetPointSize(), wx.TELETYPE, wx.NORMAL, wx.NORMAL)
  195.         self.SetFont(font)
  196.  
  197.     
  198.     def loadHistory(self, history):
  199.         hist = history[:]
  200.         hist.reverse()
  201.         self.SetValue('\n'.join(hist) + '\n')
  202.         self.SetInsertionPointEnd()
  203.  
  204.     
  205.     def addHistory(self, command):
  206.         if command:
  207.             self.SetInsertionPointEnd()
  208.             self.AppendText(command + '\n')
  209.         
  210.  
  211.     
  212.     def clearHistory(self):
  213.         self.SetValue('')
  214.  
  215.  
  216.  
  217. class DispatcherListing(wx.TextCtrl):
  218.     
  219.     def __init__(self, parent = None, id = -1):
  220.         style = wx.TE_MULTILINE | wx.TE_READONLY | wx.TE_RICH2 | wx.TE_DONTWRAP
  221.         wx.TextCtrl.__init__(self, parent, id, style = style)
  222.         dispatcher.connect(receiver = self.spy)
  223.         df = self.GetFont()
  224.         font = wx.Font(df.GetPointSize(), wx.TELETYPE, wx.NORMAL, wx.NORMAL)
  225.         self.SetFont(font)
  226.  
  227.     
  228.     def spy(self, signal, sender):
  229.         text = '%r from %s' % (signal, sender)
  230.         self.SetInsertionPointEnd()
  231.         (start, end) = self.GetSelection()
  232.         if start != end:
  233.             self.SetSelection(0, 0)
  234.         
  235.         self.AppendText(text + '\n')
  236.  
  237.  
  238.  
  239. class CrustFrame(frame.Frame, frame.ShellFrameMixin):
  240.     name = 'CrustFrame'
  241.     revision = __revision__
  242.     
  243.     def __init__(self, parent = None, id = -1, title = 'PyCrust', pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, rootObject = None, rootLabel = None, rootIsNamespace = True, locals = None, InterpClass = None, config = None, dataDir = None, *args, **kwds):
  244.         frame.Frame.__init__(self, parent, id, title, pos, size, style)
  245.         frame.ShellFrameMixin.__init__(self, config, dataDir)
  246.         if size == wx.DefaultSize:
  247.             self.SetSize((800, 600))
  248.         
  249.         intro = 'PyCrust %s - The Flakiest Python Shell' % VERSION
  250.         self.SetStatusText(intro.replace('\n', ', '))
  251.         self.crust = Crust(parent = self, intro = intro, rootObject = rootObject, rootLabel = rootLabel, rootIsNamespace = rootIsNamespace, locals = locals, InterpClass = InterpClass, startupScript = self.startupScript, execStartupScript = self.execStartupScript, *args, **kwds)
  252.         self.shell = self.crust.shell
  253.         self.crust.filling.tree.setStatusText = self.SetStatusText
  254.         self.shell.setStatusText = self.SetStatusText
  255.         self.shell.SetFocus()
  256.         self.LoadSettings()
  257.  
  258.     
  259.     def OnClose(self, event):
  260.         self.SaveSettings()
  261.         self.crust.shell.destroy()
  262.         self.Destroy()
  263.  
  264.     
  265.     def OnAbout(self, event):
  266.         title = 'About PyCrust'
  267.         text = 'PyCrust %s\n\n' % VERSION + 'Yet another Python shell, only flakier.\n\n' + "Half-baked by Patrick K. O'Brien,\n" + 'the other half is still in the oven.\n\n' + 'Shell Revision: %s\n' % self.shell.revision + 'Interpreter Revision: %s\n\n' % self.shell.interp.revision + 'Platform: %s\n' % sys.platform + 'Python Version: %s\n' % sys.version.split()[0] + 'wxPython Version: %s\n' % wx.VERSION_STRING + '\t(%s)\n' % ', '.join(wx.PlatformInfo[1:])
  268.         dialog = wx.MessageDialog(self, text, title, wx.OK | wx.ICON_INFORMATION)
  269.         dialog.ShowModal()
  270.         dialog.Destroy()
  271.  
  272.     
  273.     def ToggleTools(self):
  274.         return self.crust.ToggleTools()
  275.  
  276.     
  277.     def ToolsShown(self):
  278.         return self.crust.ToolsShown()
  279.  
  280.     
  281.     def OnHelp(self, event):
  282.         frame.ShellFrameMixin.OnHelp(self, event)
  283.  
  284.     
  285.     def LoadSettings(self):
  286.         if self.config is not None:
  287.             frame.ShellFrameMixin.LoadSettings(self)
  288.             frame.Frame.LoadSettings(self, self.config)
  289.             self.crust.LoadSettings(self.config)
  290.         
  291.  
  292.     
  293.     def SaveSettings(self, force = False):
  294.         if self.config is not None:
  295.             frame.ShellFrameMixin.SaveSettings(self)
  296.             if self.autoSaveSettings or force:
  297.                 frame.Frame.SaveSettings(self, self.config)
  298.                 self.crust.SaveSettings(self.config)
  299.             
  300.         
  301.  
  302.     
  303.     def DoSaveSettings(self):
  304.         if self.config is not None:
  305.             self.SaveSettings(force = True)
  306.             self.config.Flush()
  307.         
  308.  
  309.  
  310.